package com.zhl.Test;

import java.util.Scanner;

public class TestDemo3 {
    public static void main(String[] args) {
        double score = 0;
        score = CaculateScore2(6);
        System.out.println("选手的得分为："+ score);
    }

    public static double CaculateScore2(int n){
        //建立一个动态数组，用来录入评委的打分
        int[] Score2 = new int[n];
        //建立for循环进行录入分数
        Scanner sc = new Scanner(System.in);
        System.out.println("一共有"+n+"位评委！");
        for(int i = 0; i<n;i++){

            System.out.println("请输入第"+(i+1)+"位评委打分:");
            Score2[i] = sc.nextInt();
        }
        int Sum2 = 0;
        int Max2 = 0;
        int Min2 = 0;
        //用一个for循环完成
        for (int i = 0; i< Score2.length; i++)
        {
            Sum2 += Score2[i];
            if(Max2 <= Score2[i])
                {
                    Max2 = Score2[i];}
            if(Min2 >= Score2[i]);
                {
                    Min2 = Score2[i];
                }
        }
        //计算选手最终得分
        return 1.0 * (Sum2-Max2-Min2) / (n-2);
    }

    //下面是自己写的，没有把求最大值、最小值、总分一起算，分开了用了三次循环，较为冗余。

    public static double CaculateScore(int n){
        //建立一个动态数组，用来录入评委的打分
        int[] Score = new int[n];
        //建立for循环进行录入分数
        Scanner sc = new Scanner(System.in);
        for(int i = 0; i<n;i++){
            System.out.println("一共有"+n+"位评委！");
            System.out.println("请输入第"+(i+1)+"位评委打分:");
            Score[i] = sc.nextInt();
        }

        //进行求和 定义一个Sum进行保存
        int Sum = 0;
        for (int i = 0; i <n;i++)
        {
            Sum += Score[i];
        }
        //求最大值 最小值
        int Max = Score[0];
        int Min = Score[0];
        //求最大值
        for (int i = 0; i < n ; i++){
            if(Max <= Score[i])
                Max = Score[i];
        }
        //求最小值
        for (int i = 0; i <n ; i++){
            if(Min >= Score[0])
                Min = Score[i];
        }

        //有效总分
        Sum = Sum - Max - Min;
        double FinalScore = 0;
        //计算最终得分
        FinalScore = Sum / (n-2);
        return FinalScore;
    }
}
